Manipulate[

Module[{zoomScale,viewDomain,howBig, plotOpts,plotOptsType, paramSubst,diffEq2,diffEqSol,slopes,yTemp,solvedDE,diffEqDom,slopeField,vectorSpacing,vectorPercentLength},

(* ImageSize of graph in pixels *)
howBig=210; 
(* Set default vectors per horizontal or vertical *)
vectorSpacing=15;
vectorPercentLength=0.80;

(* Compute domain/range based on location of center and zoom settings *)
zoomScale[factor_]=(factor^3);
viewDomain[centerpt_,var_:0,radius_:zoomScale[zoomFactor]]:=If[NumberQ[var],{-Abs[radius]+centerpt,Abs[radius]+centerpt},
{var,
-Abs[radius]+centerpt,Abs[radius]+centerpt}];

(* Substitution rules for parameters used in user-entered equations *)
paramSubst={A->paramA,B->paramB,C->paramC};

(* Plot options common to all plots *)
plotOpts ={ImageSize->howBig};
plotOptsType=Options[Plot];

diffEq2=diffEq/.paramSubst/.y->yTemp[t];
slopes[t_,y_]:={1,diffEq}/.paramSubst;
slopeField:=VectorFieldPlot[slopes[t,y],Evaluate[viewDomain[viewPt[[1]],t]],
Evaluate[viewDomain[viewPt[[2]],y]],PlotRange->{Evaluate[viewDomain[viewPt[[1]]]],Evaluate[viewDomain[viewPt[[2]]]]},
ColorFunction->Function[{z},RGBColor[0, 0, 1]],
ScaleFunction->((vectorPercentLength(viewDomain[viewPt[[1]]][[2]]-viewDomain[viewPt[[1]]][[1]])/vectorSpacing)&),ScaleFactor->None];

If[clearSolutions,y0={{}};clearSolutions=False];

Show[
If[Length[y0]>1,
{Table[diffEqSol=First[(yTemp/.Quiet[NDSolve[{yTemp'[t]==diffEq2,yTemp[y0[[k,1]]]==y0[[k,2]]},yTemp,Evaluate[{t,y0[[k,1]],viewDomain[viewPt[[1]]][[2]]}]]])];

Plot[Evaluate[diffEqSol[t]],{t,Flatten[InterpolatingFunctionDomain[diffEqSol]][[1]],Flatten[InterpolatingFunctionDomain[diffEqSol]][[2]]},PlotStyle->Red,PlotRange->{Evaluate[viewDomain[viewPt[[1]]]],Evaluate[viewDomain[viewPt[[2]]]]}],{k,2,Length[y0]}],

slopeField
},

slopeField
],PlotRange->{Evaluate[viewDomain[viewPt[[1]]]],Evaluate[viewDomain[viewPt[[2]]]]},
Evaluate[FilterRules[plotOpts,plotOptsType]],Axes->True,AxesOrigin->{0,0},AspectRatio->1
]],
Style["Click on any point on the graph to set you initial condtion."],
{{diffEq,C y(A-y),"(dy/dt)= "}},
{{y0,{{}}},{-50,-50},{50,50},ControlType->Locator,LocatorAutoCreate->All,Appearance->None},
{{clearSolutions,False,"Clear solutions:"},{True,False}},
Style["Zoom"],
{{zoomFactor,1.8,""},6,0.1,ControlType->VerticalSlider,ControlPlacement->Left},
{{viewPt,{4,0},""},{-20,-20},{20,20},ControlPlacement->Right},
Delimiter,
{{paramA,5,"(+ integers) A"},0,50,1,Appearance->"Labeled",ControlPlacement->Bottom},
{{paramB,1,"(+/- integers) B"},-10,10,1,Appearance->None,ControlPlacement->Bottom},
{{paramC,0.5,"(+/- reals) C"},-1,1,Appearance->"Labeled",ControlPlacement->Bottom},Initialization:>(Needs["VectorFieldPlots`"];Needs["DifferentialEquations`InterpolatingFunctionAnatomy`"])
]